package com.crawler.waf.security.services.impl;

import org.springframework.security.core.Authentication;
import org.springframework.util.Assert;

import com.crawler.waf.security.authens.UserToken;
import com.crawler.waf.security.authentication.mac.PreAuthenticatedMacTokenAuthentication;
import com.crawler.waf.security.services.TokenService;
import com.crawler.waf.support.Constants;
import com.crawler.waf.utils.TokenManager;

/**
 * Token的验证服务。
 */
public class UserCenterMacTokenService implements TokenService {



    /**
     * 根据传入进来的token头信息，构建请求，去验证token的正确性 其中key为UC验证所需要的请求信息的json字符串
     * 如果返回的token不为空，则证明token验证成功。 如果返回时空，说明验证失败，并且有异常错误信息存在。
     * 错误信息存放在全局变量Exception中。
     */
    @Override
    public UserToken verifyToken(Authentication preAuthenticatedAuthentication)  {
        Assert.notNull(preAuthenticatedAuthentication, "preAuthenticatedAuthentication");

        PreAuthenticatedMacTokenAuthentication authentication = (PreAuthenticatedMacTokenAuthentication) preAuthenticatedAuthentication;
        //TODO 获取用授权信息
        return TokenManager.get(Constants.AUTHORIZATION_TYPE_MAC, authentication.getId());
    }
}
